<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用公共文件
/*
 * 获取微信传送的数据
 */
function get_wxd() {
	$data = [];
	$tmpXML = file_get_contents('php://input'); //读取没有处理过的原始数据
    //解析xml ,对象,数组
    $obj = new \SimpleXMLElement($tmpXML); //php 内置类,用来解析xml转成对象,创建xml, 原生PHP在使用此类时不要加 \
    //保存属性中(数组)
    foreach ($obj as $key => $v) {
        $data[$key] = strval($v); //把变量转换成字符串
    }
    return $data;
}

/*
 * 使用 CURL 传送GET、POST数据,获取结果 
 */
function CURLSend($url, $method = 'get', $data = '') {

    $ch = curl_init(); //初始化
    $headers = array('Accept-Charset: utf-8');
    //设置URL和相应的选项
    curl_setopt($ch, CURLOPT_URL, $url); //指定请求的URL
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($method)); //提交方式
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //不验证SSL
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //不验证SSL
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //设置HTTP头字段的数组
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible;MSIE5.01;Windows NT 5.0)'); //头的字符串

    if(is_array($data)) {
        $data = http_build_query($data);
    }

    if(strtolower($method) === 'post') {
        curl_setopt($ch, CURLOPT_POST, 1);
    }

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1); //自动设置header中的Referer:信息
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //提交数值
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //是否输出到屏幕上,true不直接输出
    $temp = curl_exec($ch); //执行并获取结果
    curl_close($ch);
    return $temp; //return 返回值
}

function curlJson($url, $data = '') {
    $json_str = json_encode($data, JSON_UNESCAPED_UNICODE);

    $ch = curl_init(); //初始化
    $headers = array('Accept-Charset: utf-8','Content-Type: application/json', 'Content-Length: ' . strlen($json_str));
    //设置URL和相应的选项
    curl_setopt($ch, CURLOPT_URL, $url); //指定请求的URL
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); //提交方式
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //不验证SSL
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //不验证SSL
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //设置HTTP头字段的数组

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1); //自动设置header中的Referer:信息
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_str); //提交数值
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //是否输出到屏幕上,true不直接输出
    $temp = curl_exec($ch); //执行并获取结果
    curl_close($ch);
    
    return json_decode($temp, true); //return 返回值
}

function GrabImage($url, $path = "tuling") {
    $basepath = RUNTIME_PATH.$path.DS.date('Ymd');

    $baseifno = pathinfo($url);

    $ext = $baseifno['extension'] ? $baseifno['extension'] : 'jpg';

    if(!is_dir($basepath))
        mkdir($basepath, 0755, true);


    $filename = $basepath.DS.md5($url).'.'.$ext;

    ob_start();//打开输出
    readfile($url);//输出图片文件
    $img = ob_get_contents();//得到浏览器输出
    ob_end_clean();//清除输出并关闭
    $fp2 = @fopen($filename, "a");
    fwrite($fp2, $img);//向当前目录写入图片文件，并重新命名
    fclose($fp2);
    return $filename;//返回新的文件名
} 

function upload_file_to_cdn($furl,$url){
    //  初始化
    $cfile = new CURLFile($furl);

    $ch = curl_init();
    // 要上传的本地文件地址"@F:/xampp/php/php.ini"上传时候，上传路径前面要有@符号
    $post_data = array (
      "media" => $cfile
    );
    //print_r($post_data);
    //CURLOPT_URL 是指提交到哪里？相当于表单里的“action”指定的路径
    //$url = "http://localhost/DemoIndex/curl_pos/";
    //  设置变量
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);//参数设置，是否显示头部信息，1为显示，0为不显示
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //不验证SSL
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //不验证SSL
    //伪造网页来源地址,伪造来自百度的表单提交
    //表单数据，是正规的表单设置值为非0
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 100);//设置curl执行超时时间最大是多少
    //使用数组提供post数据时，CURL组件大概是为了兼容@filename这种上传文件的写法，
    //默认把content_type设为了multipart/form-data。虽然对于大多数web服务器并
    //没有影响，但是还是有少部分服务器不兼容。本文得出的结论是，在没有需要上传文件的
    //情况下，尽量对post提交的数据进行http_build_query，然后发送出去，能实现更好的兼容性，更小的请求数据包。
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //是否输出到屏幕上,true不直接输出
    //   执行并获取结果
    $temp = curl_exec($ch);

    //  释放cURL句柄
    curl_close($ch);
    return $temp;
}

function token() {
    $config = new \app\common\model\Config;

    return $config->getToken();
}

function is_weixin() { 
    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) { 
        return true; 
    } return false; 
}

/*
 * 是否开启新注册会员活动
 */
function newuser_ticket() {
    return config('websys.newuser_ticket');
}